import { createI18n } from 'vue-i18n'

// 动态导入语言资源文件
const messages = Object.fromEntries(
	Object.entries(
		import.meta.glob('@/i18n/locales/*.json',{eager:true})
	).map(([key, value]) => {
		const locale = key.split('/').pop().replace('.json', '');
		return [locale, value.default];
	})
);

// 提供一个方法来添加或更新语言包
export function loadLocaleMessages(messages) {
	const locale = i18n.global.locale.value; // 获取当前设置的语言
	Object.keys(messages).forEach((key) => {
		i18n.global.setLocaleMessage(key, messages[key]);
	});
	i18n.global.locale.value = locale; // 重新设置语言以确保更新
}
/**
 * 创建了一个 i18n 实例，并通过 createI18nLegacyPlugin 函数启用了 i18n Legacy 模式。
 * 在模板中，我们可以使用 $t 函数来进行翻译
 * <template>
 *   <div>
 *     <p>{{ $t('greeting') }}</p>
 *   </div>
 * </template>
 */
export const i18n = createI18n({
	legacy: false, // 启用 i18n Legacy 模式
	locale: 'zh', // 默认语言
	fallbackLocale: 'en', // 备用语言
	globalInjection: true,
	messages
})

